diff options
| author | Fuwn <[email protected]> | 2026-01-24 13:09:50 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-01-24 13:09:50 +0000 |
| commit | 396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b (patch) | |
| tree | b9df4ca6a70db45cfffbae6fdd7252e20fb8e93c /src/app/(main)/teams/[teamId]/TeamSettings.tsx | |
| download | umami-main.tar.xz umami-main.zip | |
Created from https://vercel.com/new
Diffstat (limited to 'src/app/(main)/teams/[teamId]/TeamSettings.tsx')
| -rw-r--r-- | src/app/(main)/teams/[teamId]/TeamSettings.tsx | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/app/(main)/teams/[teamId]/TeamSettings.tsx b/src/app/(main)/teams/[teamId]/TeamSettings.tsx new file mode 100644 index 0000000..3ddbe00 --- /dev/null +++ b/src/app/(main)/teams/[teamId]/TeamSettings.tsx @@ -0,0 +1,49 @@ +import { Column } from '@umami/react-zen'; +import { TeamLeaveButton } from '@/app/(main)/teams/TeamLeaveButton'; +import { PageHeader } from '@/components/common/PageHeader'; +import { Panel } from '@/components/common/Panel'; +import { useLoginQuery, useNavigation, useTeam } from '@/components/hooks'; +import { Users } from '@/components/icons'; +import { ROLES } from '@/lib/constants'; +import { TeamEditForm } from './TeamEditForm'; +import { TeamManage } from './TeamManage'; +import { TeamMembersDataTable } from './TeamMembersDataTable'; + +export function TeamSettings({ teamId }: { teamId: string }) { + const team: any = useTeam(); + const { user } = useLoginQuery(); + const { pathname } = useNavigation(); + + const isAdmin = pathname.includes('/admin'); + + const isTeamOwner = + !!team?.members?.find(({ userId, role }) => role === ROLES.teamOwner && userId === user.id) && + user.role !== ROLES.viewOnly; + + const canEdit = + user.isAdmin || + (!!team?.members?.find( + ({ userId, role }) => + (role === ROLES.teamOwner || role === ROLES.teamManager) && userId === user.id, + ) && + user.role !== ROLES.viewOnly); + + return ( + <Column gap="6"> + <PageHeader title={team?.name} icon={<Users />}> + {!isTeamOwner && !isAdmin && <TeamLeaveButton teamId={team.id} teamName={team.name} />} + </PageHeader> + <Panel> + <TeamEditForm teamId={teamId} allowEdit={canEdit} showAccessCode={canEdit} /> + </Panel> + <Panel> + <TeamMembersDataTable teamId={teamId} allowEdit={canEdit} /> + </Panel> + {isTeamOwner && ( + <Panel> + <TeamManage teamId={teamId} /> + </Panel> + )} + </Column> + ); +} |